// stores/modules/user.js
import {
	defineStore
} from 'pinia'
import {
	ref
} from 'vue'
import userApi from '@/api/modules/user'
import {
	storage
} from '@/utils/storage'

export const useUserStore = defineStore('user', () => {
	const token = ref(storage.get('token') || '')
	const userInfo = ref(storage.get('userInfo') || null)
	const loading = ref(false)

	// 微信登录
	async function wxLogin(data) {
		loading.value = true
		try {
			const res = await userApi.wxLogin(data)
			// 保存用户信息
			userInfo.value = res.data
			storage.set('userInfo', res.data)
			// 保存token和userId
			storage.set('token', `Bearer ${res.data.token}`)
			storage.set('userId', res.data.id)
			return res.data
		} catch (error) {
			uni.showToast({
				title: error.message || '登录失败',
				icon: 'none'
			})
			throw error
		} finally {
			loading.value = false
		}
	}
	
	async function phoneLogin(params) {
	  loading.value = true
	  try {
	    // 解密手机号数据
	    const res = await userApi.phoneLogin(params.encryptedData, params.code)
	    if (res.code === 200) {
	      // 保存用户信息
	      userInfo.value = res.data
	      storage.set('userInfo', res.data)
	      // 保存token和userId
	      storage.set('token', `Bearer ${res.data.token}`)
	      storage.set('userId', res.data.id)
	      return res.data
	    }
	    throw new Error(res.message || '登录失败')
	  } catch (error) {
	    uni.showToast({
	      title: error.message || '登录失败',
	      icon: 'none'
	    })
	    throw error
	  } finally {
	    loading.value = false
	  }
	}

	// 获取用户信息
	// stores/modules/user.js 中的 getUserInfo 函数
	async function getUserInfo() {
		const userId = storage.get('userId')
		if (!userId) {
			throw new Error('未登录')
		}
		try {
			// 获取用户信息
			const res = await userApi.getUserInfo()
			console.log('获取到的用户信息:', res) // 调试日志

			if (res.code === 200) {
				// 直接存储接口返回的数据
				userInfo.value = res.data
				// 更新本地存储
				storage.set('userInfo', res.data)
				return res.data
			}
			throw new Error(res.message || '获取用户信息失败')
		} catch (error) {
			console.error('获取用户信息失败:', error)
			throw error
		}
	}

	// 检查登录状态
	function checkLoginStatus() {
		const userId = storage.get('userId')
		const token = storage.get('token')
		return !!(userId && token)
	}
	const logout = () => {
	    // 清除用户信息
	    userInfo.value = null
	    // 清除本地存储
	    storage.remove('token')
	    storage.remove('userInfo')
	    storage.remove('userId')
	  }

	return {
		token,
		userInfo,
		loading,
		wxLogin,
		logout,
		phoneLogin,
		getUserInfo,
		checkLoginStatus
	}
})